
typedef struct friend_list            // 记录所有用户的好友申请发起人与接收人数组
{
	char fromUser[50];                // 发起申请人用户名
	int fromClient;                   // 发起申请人client标识符
    char toUser[50];                  // 接收申请人用户名
    int toClient;                     // 接收申请人client标识符
    int flag;                         // 数组是否占用标识
}FriendList;



typedef struct now_client             // 在线人数
{
	char name[20];                    // 在线用户名
	int socket;                       // 在线用户标识符
}NowClient;


typedef struct Msg{
    struct{
        int length;                  // 整个协议的长度(包括协议头+body)单位字节
        int cmd;                     // 请求的ID,比如:登录请求、聊天请求,心跳请求等请求命令ID     
        int endLength;               // 协议结束的长度,单位字节
        short seqno;                 // 通信报文的序列号,响应报文与请求报文序列号要相同
    } header;

    union{
        struct
        {
            char username[50];       // 用户名
            char password[50];       // 密码
            int isLogin;             // 是否登陆成功:1为成功，0为失败
        } login;

        struct
        {
            char fromUser[50];       // 发送人用户名
            char toUser[50];         // 接收人用户名
            char time[50];           // 发送时间
            int type;                // 消息类型:1为文本,2为文件
            char message[1024];      // 消息内容
            char file_path[1024];    // 文件名
            int is_on_line;          // 是否在线:1为在线,0为不在线.
            int is_consent_chat;     // 是否同意私聊:1为同意,0为不同意.
            int group_or_private;    // 判断发送的消息为群聊还是私聊:1为群聊,0为私聊.
        } chat;

        struct
        {
            char username[50];       // 用户名
            char password[50];       // 密码
            int  status;             // 注册是否成功:1为成功,0为失败.
        } regisc; 

    };
    
}Msg;